iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 19
0
Software Development

ROS進階學習筆記系列 第 19

Day 19 - ROS tutlesim (2)

  • 分享至 

  • xImage
  •  

延續昨天的小烏龜,昨天的範例主要是顯示topic之間的傳輸,但小烏龜的範例也有service的應用,也就是官網寫得很籠統的介紹,今天就一起來好好講解吧! (絕對不是因為筆者的車還沒修好的關係!
一樣先開好roscore和turtlesim:

$ roscore

//另一個terminal
$ rosrun turtlesim turtlesim_node

昨天的範例是使用draw_square,今天來用一個大家比較常用的teleop_key:

$ rosrun turtlesim turtle_teleop_key

這時候就會顯示叫你使用arrow_key,也就是鍵盤上的方向鍵控制小烏龜~
然而他一次只能監聽一個鍵,所以沒辦法做到邊旋轉邊移動,有點可惜就是了(如果我的車車修不好的話,就來寫個邊旋轉邊移動的node好了QQ

https://ithelp.ithome.com.tw/upload/images/20201003/20112348dcGWKBiFDA.png

好的,接下來就開始進入service系列,在ternimal列出現在可以呼叫的service有:

$ rosservice list

/clear
/kill
/reset
/rosout/get_loggers
/rosout/set_logger_level
/spawn
/turtle1/set_pen
/turtle1/teleport_absolute
/turtle1/teleport_relative
/turtlesim/get_loggers
/turtlesim/set_logger_level

在官網其實有稍微講解一下這些service分別是什麼作用:

  • clear : 清除繪圖的背景,也就是清空畫布的意思
  • reset : 重置整個畫面,包含烏龜的位置也會重置
  • kill : 殺掉一隻烏龜(好殘忍XD
  • spawn : 新增一隻烏龜出來
  • turtleX/set_pen : X表示烏龜的編號,並設定這隻烏龜畫出來的路線的顏色
  • turtleX/teleport_absolute : 遙控烏龜到某絕對位置
  • turtleX/teleport_relative : 遙控烏龜到某相對位置

使用的方法也很簡單,透過terminal呼叫service就可以了:

$ rosservice call /clear
$ rosservice call /reset

上面兩個都是相對簡單的操作,為避免占版面,筆者就不放畫面上來了XD 大家可以自己玩看看~~
接下來就是生一隻小烏龜出來跟殺掉一隻烏龜了:

$ rosservice call /spawn "x:1.0
y:1.0
theta:30.0
name:'turtle2'"

https://ithelp.ithome.com.tw/upload/images/20201004/20112348x79nJCOHzZ.png
就可以看到多一隻小烏龜出現在左下角了~~這個座標系居然是直角座標系XDDDD
這時候開啟service list就可以看到:

$ rosservice list

/clear
/kill
/reset
/rosout/get_loggers
/rosout/set_logger_level
/spawn
/turtle1/set_pen
/turtle1/teleport_absolute
/turtle1/teleport_relative
/turtle2/set_pen
/turtle2/teleport_absolute
/turtle2/teleport_relative
/turtlesim/get_loggers
/turtlesim/set_logger_level

可以看到多了三個跟turtle2有關的service出現了,可以透過呼叫上述三個service來操作烏龜2號。

最後是殺掉那隻烏龜:

$ rosservice call /kill turtle2

烏龜就被殺死囉! QQQQQQQQQ

Reference

http://wiki.ros.org/turtlesim
https://www.itread01.com/content/1548339858.html


上一篇
Day 18 - ROS tutlesim
下一篇
Day 20 - ROS TF
系列文
ROS進階學習筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言